OpenTelemetry Colloctor全体概要編
OpenTelemetryは各種SDKおよびCollectorを提供しており、全てコードが公開されています。
今回からはその中のCollectorに関して内部実装を見ていこうと思います。
SDK同様に基本的にOpenTelemetryにおける基礎的な知識の説明は全部割愛します。ドキュメントを見てください。
OpenTelemetry Collectorはパイプラインベースのアーキテクチャで構成されます。
各パイプラインは「レシーバー→プロセッサー→エクスポーター」の流れになっており、受信したデータは順次加工・フィルタリングされてから外部へ送信されます。
各実装はモジュールごとに分かれています。
receiver
アプリケーションやサービスからテレメトリデータを受信するコンポーネントで、Collectorのパイプラインの入口となる。複数のパイプライも指定できて、その場合は単一receiverインスタンスからfan-out consumerが作られprocessorに配られる
processor
受信したテレメトリデータに対して、変換・フィルタリング・バッチ化などの処理を行う中間コンポーネント。 複数のprocessorを組み合わせて使える
exporter
処理済みのテレメトリデータを、外部のバックエンドやストレージに送信するコンポーネント。複数の送信先を定義できる
scraper
外部システムからPull型でテレメトリ(主にMetrics)を定期的に収集するためのコンポーネント。
extension
Collectorプロセス自体に対して、ヘルスチェックや認証などの追加機能を提供する補助コンポーネント。
connector
パイプライン間でテレメトリデータを中継・変換するためのコンポーネントで、ExporterとReceiverの両方として振る舞う
まとめ
明日から内部実装を見ます。